package com.project.controller.web;

import com.project.common.utils.MyPageHelper;
import com.project.entity.SysInfo;
import com.project.myBeans.R;
import com.project.myBeans.ResponseBean;
import com.project.service.SysInfoService;
import com.project.service.base.BaseService;
import com.sun.org.apache.regexp.internal.RE;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Author: TateBrown
 * @date: 2018/5/27 17:14
 * @param:
 * @return:
 */
@EnableAutoConfiguration //自动载入应用程序所需的所有Bean
@RestController //@Controller与@ResponseBody的合并
@RequestMapping(value = "/sysInfo")
@Api(description = "系统信息相关",value = "sysInfo")
public class SysInfoController extends BaseService{
    @Autowired
    private SysInfoService sysInfoService;

    /**
     * TateBrown 2018年5月27日
     *
     * @param propertyName 属性名
     * @return
     */
    @ApiOperation("根据属性名获取系统配置信息")
        @GetMapping("/findOneByPropertyName/{propertyName}")
        public R findOneByPropertyName(@PathVariable("propertyName") String propertyName) {
            try {
                SysInfo sysInfo = sysInfoService.findOneByPropertyName(propertyName);
                if (sysInfo == null) {
                    return R.error("系统配置中不存在此属性");
                }
                else {
                    return R.ok("获取成功").put("data",sysInfoService.findOneByPropertyName(propertyName));
                }
            } catch (Exception e) {
                e.printStackTrace();
                return R.error("程序异常");
            }
    }
    /**
     * TateBrown 2018年5月27日
     *
     * @param sysInfo
     * @return
     */
    @ApiOperation("添加单条系统配置参数")
    @PostMapping("/addOne")
    public R addOne(@RequestBody SysInfo sysInfo){
        try {
            sysInfoService.addOne(sysInfo);
            return R.ok("添加成功");
        } catch (Exception e) {
            e.printStackTrace();
            return R.error("程序异常");
        }
    }
    /**
     * TateBrown 2018年5月27日
     *
     * @param id
     * @return
     */
    @ApiOperation("根据主键删除系统配置参数")
    @GetMapping("/removeOneById/{id}")
    public R removeOneById(@PathVariable Integer id){
        try {
            Assert.isTrue(checkDeleteUpdateIsSuccess(sysInfoService.removeOneById(id)), "未找到对应属性名，修改失败");
            return R.ok();
        } catch (Exception e) {
            e.printStackTrace();
           return R.error("程序异常");
        }
    }
    /**
     * TateBrown 2018年5月27日
     *
     * @param sysInfo
     * @return
     */
    @ApiOperation("根据属性值更新系统配置信息")
    @PostMapping("/modifyOneByPropertyName")
    public R modifyOneByPropertyName(@RequestBody SysInfo sysInfo) {
        try {
            Assert.isTrue(checkDeleteUpdateIsSuccess(sysInfoService.modifyOneByPropertyName(sysInfo)), "未找到对应属性名，修改失败");
            return R.ok("修改成功");
        } catch (Exception e) {
            e.printStackTrace();
            return R.error(e.getMessage());
        }
    }
    /**
     * TateBrown 2018年5月27日
     *
     * @param sysInfo
     * @return
     */
    @ApiOperation("根据主键更新系统配置信息")
    @PostMapping("/modifyOneById")
    public R modifyOneById(@RequestBody SysInfo sysInfo) {
        try {
            Assert.isTrue(checkDeleteUpdateIsSuccess(sysInfoService.modifyOneById(sysInfo)), "未找到对应属性名，修改失败");
            return R.ok("修改成功");
        } catch (Exception e) {
            e.printStackTrace();
            return R.error(e.getMessage());
        }
    }
    /**
     * TateBrown 2018年5月27日
     *
     * @param sysInfo
     * @return
     */
    @ApiOperation("根据条件批量查找")
    @PostMapping("/findBachByCondition")
    public R findBachByCondition(@RequestBody SysInfo sysInfo){
        try {
            MyPageHelper.setPageParam(sysInfo);
            if (sysInfo.getPageIndex() > 0) {
                sysInfo.setPageIndex(sysInfo.getPageIndex()-1);
            }
           return R.ok("查找成功").put("data",sysInfoService.findBatchByCondition(sysInfo)).put("total", MyPageHelper.getTotal(sysInfoService.findBatchByCondition(sysInfo)));

        } catch (Exception e) {
            e.printStackTrace();
            return R.error("程序异常");
        }
    }

    /**
     * TateBrown 2018年5月27日
     *
     * @paraxxxxxxxxxxxxm id
     * @return
     */
    @ApiOperation("根据id查找系统信息")
    @GetMapping("/findOneById/{id}")
    public R findOneById(@PathVariable Integer id){
        try {
            return R.ok("查找成功").put("data",sysInfoService.findById(id));
        } catch (Exception e) {
            e.printStackTrace();
          return R.error("程序异常");
        }
    }
}
